/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wasolicitudesfiec.consultas;

import entidad.Persona;
import java.sql.*;
import java.util.Vector;

/**
 *
 * @author kabad
 */
public class ConsultasPersona {

    private Connection con;

    public boolean HLmodificarPersona(Persona val) throws SQLException {
        return modificarPersona(val.getApellidos(), val.getCedula(), val.getCorreo(), val.getIdPersona(), val.getNombres(), val.getTituloAcademico(),val.getContraseña(),val.isActivo());
    }

    public boolean eliminarPersona(int idPersona) throws SQLException {
        boolean exitoOperacion = true;

        PreparedStatement proc = con.prepareStatement(
                "call eliminarPersona(?) ");
        proc.setInt(1, idPersona);
        proc.execute();
        return exitoOperacion;


    }

    public boolean HLeliminarPersona(Persona val) throws SQLException {
        return eliminarPersona(val.getIdPersona());
    }

    public Persona nuevoPersona(String apellidos, String cedula, String correo, String nombres, String tituloAcademico, String usuario, String contraseña, boolean activo) throws SQLException {
        Persona reg = new Persona();

        PreparedStatement proc = con.prepareStatement(
                "call nuevoPersona(?,?,?,?,?,?,?,?) ");
        proc.setString(1, apellidos);
        proc.setString(2, cedula);
        proc.setString(3, correo);
        proc.setString(4, nombres);
        proc.setString(5, tituloAcademico);
        proc.setString(6, usuario);
        proc.setString(7, contraseña);
        proc.setBoolean(8, activo);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setContraseña(rs.getString(8));
            reg.setActivo(rs.getBoolean(9));
        } else {
            reg = null;
        }
        return reg;


    }

    public void setConexion(Connection con) {
        this.con = con;
    }

    public Persona HLnuevoPersona(Persona val) throws SQLException {
        return nuevoPersona(val.getApellidos(), val.getCedula(), val.getCorreo(), val.getNombres(), val.getTituloAcademico(),val.getUsuario(),val.getContraseña(), val.isActivo());
    }

    public Persona leerPersona(int idPersona) throws SQLException {
        Persona reg = new Persona();

        PreparedStatement proc = con.prepareStatement(
                "call leerPersona(?) ");
        proc.setInt(1, idPersona);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setContraseña(rs.getString(8));
            reg.setActivo(rs.getBoolean(9));
        } else {
            reg = null;
        }
        return reg;


    }

    public Persona HLleerPersona(Persona val) throws SQLException {
        return leerPersona(val.getIdPersona());
    }

    public Vector<Persona> leerVariosPersona() throws SQLException {
        Vector<Persona> datos = new Vector<Persona>();
        Persona reg;
        PreparedStatement proc = con.prepareStatement(
                "call leerVariosPersona() ");
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Persona();
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setContraseña(rs.getString(8));
            reg.setActivo(rs.getBoolean(9));
            datos.add(reg);
        }//end while

        return datos;


    }

    public Vector<Persona> HLleerVariosPersona(Persona val) throws SQLException {
        return leerVariosPersona();
    }

    public boolean modificarPersona(String apellidos, String cedula, String correo, int idPersona, String nombres, String tituloAcademico,String contraseña, boolean activo) throws SQLException {
        boolean exitoOperacion = true;

        PreparedStatement proc = con.prepareStatement(
                "call modificarPersona(?,?,?,?,?,?,?,?) ");
        proc.setString(1, apellidos);
        proc.setString(2, cedula);
        proc.setString(3, correo);
        proc.setInt(4, idPersona);
        proc.setString(5, nombres);
        proc.setString(6, tituloAcademico);
        proc.setString(7, contraseña);
        proc.setBoolean(8, activo);
        proc.execute();
        return exitoOperacion;


    }

    public Persona leerPersonaPorUsuario(String usuario, int idPersona) throws SQLException {
        Persona reg = new Persona();

        PreparedStatement proc = con.prepareStatement(
                "call leerPersonaPorUsuario(?,?) ");
        proc.setString(1, usuario);
        proc.setInt(2, idPersona);
        ResultSet rs = proc.executeQuery();
        if (rs.next()) {
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setContraseña(rs.getString(8));
            reg.setActivo(rs.getBoolean(9));
        } else {
            reg = null;
        }
        return reg;
    }

    public Vector<Persona> leerVariosPersonaPorIdRol(int idRol) throws SQLException {
        Vector<Persona> datos = new Vector<Persona>();
        Persona reg;

        PreparedStatement proc = con.prepareStatement(
                "call leerVariosPersonaPorIdRol(?) ");
        proc.setInt(1, idRol);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Persona();
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setContraseña(rs.getString(8));
            reg.setActivo(rs.getBoolean(9));
            datos.add(reg);
        }
        return datos;


    }

    public Vector<Persona> leerVariosPersona(String criterio) throws SQLException {
        Vector<Persona> datos = new Vector<Persona>();
        Persona reg;

        PreparedStatement proc = con.prepareStatement(
                "call buscarPersona(?) ");
        proc.setString(1, criterio);
        ResultSet rs = proc.executeQuery();
        while (rs.next()) {
            reg = new Persona();
            reg.setApellidos(rs.getString(1));
            reg.setCedula(rs.getString(2));
            reg.setCorreo(rs.getString(3));
            reg.setIdPersona(rs.getInt(4));
            reg.setNombres(rs.getString(5));
            reg.setTituloAcademico(rs.getString(6));
            reg.setUsuario(rs.getString(7));
            reg.setActivo(rs.getBoolean(9));
            datos.add(reg);
        }//end while

        return datos;


    }
}// FIN CLASE: ConsultasPersona